﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AuriaCompte.Lib.Dao;
using AuriaCompte.Lib;

namespace AuriaCompte.Fenetre
{
    public partial class GestionDeCompte : ComponentFactory.Krypton.Toolkit.KryptonForm
    {
        private char Mode;
        private int i_compte_id;
        
        public GestionDeCompte(char modeP, Int32 i_compte_idP = 0)
        {
            this.Mode = modeP;
            this.i_compte_id = i_compte_idP;
            InitializeComponent();
        }

        private void kBtnValider_Click(object sender, EventArgs e)
        {
            bool cont = true;
            if (this.kTbLibelle.Text.Trim() != string.Empty)
            {
                if (this.kTbCodeBanque.Text.Trim() != string.Empty
                    && this.kTbCodeGuichet.Text.Trim() != string.Empty
                    && this.kTbCodeCompte.Text.Trim() != string.Empty
                    && this.kTbCle.Text.Trim() != string.Empty)
                {
                    if (this.kTbCle.Text != Tools.DonneCleRIB(this.kTbCodeBanque.Text, this.kTbCodeGuichet.Text, this.kTbCodeCompte.Text))
                    {
                        ComponentFactory.Krypton.Toolkit.KryptonTaskDialog.Show("Erreur", string.Empty, "La clé RIB fournie est incorrecte.", MessageBoxIcon.Error, ComponentFactory.Krypton.Toolkit.TaskDialogButtons.OK);
                        cont = false;
                    }
                }
            }
            else
            {
                ComponentFactory.Krypton.Toolkit.KryptonTaskDialog.Show("Erreur", string.Empty, "Le libellé du compte est obligatoire.", MessageBoxIcon.Error, ComponentFactory.Krypton.Toolkit.TaskDialogButtons.OK);
                cont = false;
            }

            if (cont)
            {
                Compte c = this.RempliObjet();
                DaoCompte dao = new DaoCompte();
                if (this.Mode == 'C')
                {
                    dao.Insert(c);
                }
                else
                {
                    dao.Update(c);
                }
                this.Close();
            }
        }

        private void GestionDeCompte_Load(object sender, EventArgs e)
        {
            if (this.Mode == 'C')
            {
                this.kHeader.Values.Description = "Création";
            }
            else if (this.Mode == 'M')
            {
                this.kHeader.Values.Description = "Modification";
                this.RempliForm((new DaoCompte()).SelectById(this.i_compte_id));
            }
            else
            {
                ComponentFactory.Krypton.Toolkit.KryptonTaskDialog.Show("Erreur", string.Empty, "Le mode transmis est incorrecte. Veuillez contacter le développeur.", MessageBoxIcon.Error, ComponentFactory.Krypton.Toolkit.TaskDialogButtons.OK);
                this.Close();
            }
        }

        private void RempliForm(Compte c)
        {
            this.kTbLibelle.Text = c.s_libelle;
            this.kTbCommentaire.Text = c.s_commentaire;
            this.kTbBanque.Text = c.s_nom_banque;
            this.kTbAdresseBanque.Text = c.s_adresse_banque;
            this.kTbTitulaire.Text = c.s_titulaire;
            this.kTbAdresseTitulaire.Text = c.s_adresse_titulaire;
            this.kTbCodeBanque.Text = c.s_code_banque;
            this.kTbCodeGuichet.Text = c.s_code_guichet;
            this.kTbCodeCompte.Text = c.s_code_compte;
            this.kTbCle.Text = c.s_cle_rib;
        }

        private Compte RempliObjet()
        {
            Compte retour = new Compte();
            retour.i_compte_id = this.i_compte_id;
            retour.s_libelle = this.kTbLibelle.Text;
            retour.s_commentaire = this.kTbCommentaire.Text;
            retour.s_nom_banque = this.kTbBanque.Text;
            retour.s_adresse_banque = this.kTbAdresseBanque.Text;
            retour.s_titulaire = this.kTbTitulaire.Text;
            retour.s_adresse_titulaire = this.kTbAdresseTitulaire.Text;
            retour.s_code_banque = this.kTbCodeBanque.Text;
            retour.s_code_guichet = this.kTbCodeGuichet.Text;
            retour.s_code_compte = this.kTbCodeCompte.Text;
            retour.s_cle_rib = this.kTbCle.Text;
            return retour;
        }

        private void kBtnAnnuler_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
